table of contents
        
      
      
    | INSERT(7) | SQL Commands | INSERT(7) | 
NAME¶
INSERT - 在表中创建新行
SYNOPSIS¶
INSERT INTO table [ ( column [, ...] ) ]
{ DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) | query }
DESCRIPTION 描述¶
INSERT 允许我们向表中插入新行。 我们可以一次插入一行或多行作为查询结果。
  
  
    目标列表中的列/字段可以按任何顺序排列。
    在目标列中没有出现的列/字段将插入缺省值,
    可能是定义了的缺省值或者
    NULL。
  
  
    如果每行的表达式不是正确的数据类型,系统将试图进行自动的类型转换。
  
  
    要想向表中插入数据,你必须有
    INSERT 权限,
    如果你使用了 query
    子句插入来自查询里的数据行,
    你还需要拥有在查询里使用的表的
    SELECT 权限。
PARAMETERS 参数¶
- table
- 
    
 现存表的名称(可以有模式修饰)。
- column
- 
    
 表 table 中的字段名。
- DEFAULT VALUES
- 
    
 所有字段都会用它们的缺省值填充。
- expression
- 
    
 赋予 column 的一个有效表达式或值。
- DEFAULT
- 
    
 这个字段将被字段它的填充。
- query
- 
    
 一个查询(SELECT 语句),它提供插入的数据行。 请参考 SELECT 语句获取语法描述。
OUTPUTS 输出¶
成功完成后,一条 INSERT 命令返回一个下面形式的命令标签
INSERT oid countcount 是插入的行数。 如果 count 正好是一,并且目标表有 OID, 那么 oid 是赋予插入行的 OID。 否则 oid 是零。
EXAMPLES 例子¶
向表 films 里插入一行:
INSERT INTO films VALUES
('UA502', 'Bananas', 105, '1971-07-13', 'Comedy', '82 minutes');
  
  
    在第二个例子里面省略了字段
    len
    因此在它里面将只存储缺省的
    NULL 值:
INSERT INTO films (code, title, did, date_prod, kind)
VALUES ('T_601', 'Yojimbo', 106, '1961-06-16', 'Drama');
  
  
    在第三个例子里,我们用
    DEFAULT
    值作为数据字段,而不是声明一个数值:
INSERT INTO films VALUES
('UA502', 'Bananas', 105, DEFAULT, 'Comedy', '82 minutes'); INSERT INTO films (code, title, did, date_prod, kind)
VALUES ('T_601', 'Yojimbo', 106, DEFAULT, 'Drama');
  
   从表 tmp 中插入几行到表
    films 中:
INSERT INTO films SELECT * FROM tmp;
  
   插入数组:
-- 创建一个空的 3x3 游戏板来玩圈-和-叉游戏 -- (所有这些查询创建相同的游戏) INSERT INTO tictactoe (game, board[1:3][1:3])
VALUES (1,'{{"","",""},{},{"",""}}'); INSERT INTO tictactoe (game, board[3][3])
VALUES (2,'{}'); INSERT INTO tictactoe (game, board)
VALUES (3,'{{,,},{,,},{,,}}');
COMPATIBILITY 兼容性¶
INSERT 完全遵循 SQL 标准。可能碰到的关于 query 子句特性的限制在 SELECT [select(7)] 语句中有相关文档。
译者¶
Postgresql 中文网站 何伟平 <laser@pgsqldb.org>
| 2003-11-02 | SQL - Language Statements |